/**
 * 
 * @authors Your Name (you@example.org)
 * @date    2018-07-07 14:35:14
 * @version $Id$
 */

// ajax({
// 	url : 'ajax.js',
// 	type : 'GET',
// 	async : true,
// 	data : {
// 		user : 'zhang',
// 		age : 18
// 	},
// 	success : function (date){
// 		console.log(date);
// 	}
// });

function ajax(options){
	// 数据传输方法
	options.type = /post/i.test(options.type) ? 'POST' : 'GET';
	// 是否同步
	options.async = options.async === false ? false : true;

	// 创建对象
	var xhr = new XMLHttpRequest();

	var data = '';

	for(var k in options.data){
		data += k +'='+ encodeURIComponent(options.data[k]) +'&';
	}

	if(options.type === 'GET'){
		if(/\?/.test(options.url)){
			if(!/(&\s*)$/.test(options.url)){
				options.url += '&';
			}
		}else{
			options.url += '?';
		}
		options.url += data + '_=' + new Date().getTime();
		data = '';
	}

	// 打开连接
	xhr.open(options.type, options.url, options.async);

	// 请求头
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');

	// 监听事件状态
	xhr.onreadystatechange = function(){
		if((this.readyState === 4) && (this.status > 199 && this.status < 300 || this.status === 304)){
			options.success && options.success.call(this,strJsonCode(this.response));
		}else{
			options.error && options.error.call(this,this.status);
		}
	}

	xhr.send(data);	//发送

	// 将字符串打包成json,错误返回原字符串
	function strJsonCode(str){
		try {
			return JSON.parse(str);
		} catch(e) {
			return str;
		}
	}
}
